/*
 * 发散函数(diverging function)
 * 绝不会返回。它们使用 `!` 标记，这是一个空类型
 *
 */
fn foo() -> ! {
    panic!("This call never returns.");
}

// 和所有其他类型相反，这个类型无法实例化，因为此类型可能具有的所有可能值
// 的集合为空。注意，它与`()`类型不同，后者只有一个可能的值。
// 如下，虽然返回值中没有信息，但次函数照常返回
fn some_fn() {
    ()
}


fn main() {
    let a: () = some_fn();
    println!("you can see this line.");

    foo();
}